Jackson হল একটি শক্তিশালী এবং জনপ্রিয় Java library যা JSON (JavaScript Object Notation) ডেটা ফরম্যাটের সাথে কাজ করার জন্য ব্যবহৃত হয়। এটি মূলত JSON ডেটাকে Java objects এবং Java objects কে JSON এ রূপান্তর করার জন্য ব্যবহৃত হয়। Jackson দ্রুত, সহজ এবং পোর্টেবল, যার ফলে এটি Java এ JSON ম্যানিপুলেশনের জন্য অন্যতম জনপ্রিয় লাইব্রেরি হিসেবে বিবেচিত।
Jackson লাইব্রেরি JSON Parsing এবং Binding এর জন্য মূলত তিনটি প্রধান কার্যাবলী সম্পাদন করে:
- JSON to Java (Deserialization): JSON ডেটাকে Java objects এ রূপান্তর।
- Java to JSON (Serialization): Java objects কে JSON ফরম্যাটে রূপান্তর।
- Streaming API: JSON ডেটাকে স্ট্রীম আকারে প্রক্রিয়া করা, যা বৃহৎ JSON ডেটা সেটের জন্য উপযুক্ত।
Jackson মূলত দুটি অংশে বিভক্ত:
- Jackson Databind: JSON-কে Java objects এ এবং Java objects কে JSON এ রূপান্তরের জন্য প্রধান API।
- Jackson Streaming API: স্ট্রীমিং ভিত্তিক JSON প্রসেসিং।
Jackson এর প্রধান বৈশিষ্ট্য:
- Fast and Efficient: Jackson একটি দ্রুত JSON পার্সিং এবং ম্যানিপুলেশন লাইব্রেরি, যা ডেটা প্রক্রিয়াকরণের সময় খরচ কমায়।
- Simple to Use: Jackson API ব্যবহার করা সহজ এবং আপনাকে কম কোডে JSON ডেটা প্রক্রিয়া করার সুবিধা দেয়।
- Data Binding: Jackson JSON ডেটাকে Java objects এ এবং Java objects কে JSON এ রূপান্তর করার জন্য data binding সমর্থন করে।
- Streaming: Jackson এর streaming API বড় JSON ডেটাসেটের জন্য উপযুক্ত, যেখানে ডেটা ধীরে ধীরে প্রক্রিয়া করা প্রয়োজন।
- Flexible Configuration: Jackson এর মাধ্যমে আপনি JSON পার্সিং এবং সেরিয়ালাইজেশন/ডেসিরিয়ালাইজেশনের জন্য কাস্টম কনফিগারেশন করতে পারেন, যেমন কাস্টম JSON serializers এবং deserializers তৈরি করা।
- Support for Collections and Generics: Jackson আপনাকে collections (যেমন, List, Set) এবং generics সঠিকভাবে JSON এ রূপান্তর করতে সাহায্য করে।
Jackson এর প্রধান কম্পোনেন্টস
- Jackson Core: JSON স্ট্রীমিং API সরবরাহ করে, যা Parser এবং Generator এর মাধ্যমে JSON ডেটা স্ট্রীম পার্স এবং জেনারেট করতে সক্ষম।
- Jackson Databind: JSON ডেটাকে Java Objects এ এবং Java objects কে JSON এ রূপান্তর করার জন্য ব্যবহৃত হয়। এটি ObjectMapper ক্লাসের মাধ্যমে কাজ করে।
- Jackson Annotations: Jackson JSON পার্সিং এবং সেরিয়ালাইজেশন/ডেসিরিয়ালাইজেশন কাস্টমাইজ করার জন্য বিভিন্ন অ্যানোটেশন সরবরাহ করে। যেমন,
@JsonProperty,@JsonIgnore,@JsonInclude, ইত্যাদি। - Jackson Modules: Jackson বিভিন্ন অতিরিক্ত মডিউল প্রদান করে যা বিশেষ ধরনের ডেটা যেমন JAX-RS, XML, এবং YAML এর জন্য JSON সাপোর্ট প্রদান করে।
Jackson ব্যবহার করা
Jackson এর ব্যবহার খুবই সহজ এবং সাধারণত ObjectMapper ক্লাসের মাধ্যমে JSON ডেটাকে Java objects এ এবং Java objects কে JSON ফরম্যাটে রূপান্তর করা হয়। এখানে একটি সাধারণ উদাহরণ দেওয়া হল:
Example: JSON to Java Object Conversion (Deserialization)
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"John\", \"age\":30}";
ObjectMapper objectMapper = new ObjectMapper();
try {
// Convert JSON string to Java object
Person person = objectMapper.readValue(json, Person.class);
System.out.println(person.getName()); // Output: John
System.out.println(person.getAge()); // Output: 30
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Example: Java Object to JSON Conversion (Serialization)
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
Person person = new Person();
person.setName("John");
person.setAge(30);
ObjectMapper objectMapper = new ObjectMapper();
try {
// Convert Java object to JSON string
String json = objectMapper.writeValueAsString(person);
System.out.println(json); // Output: {"name":"John","age":30}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Jackson এর কিছু গুরুত্বপূর্ণ Annotations
@JsonProperty:
- এটি JSON ফিল্ডের নাম এবং Java প্রপার্টির মধ্যে মানচিত্র করার জন্য ব্যবহৃত হয়।
@JsonProperty("full_name") private String name;@JsonIgnore:
- এই অ্যানোটেশনটি নির্দিষ্ট করে যে একটি ফিল্ড JSON থেকে উপেক্ষিত হবে।
@JsonIgnore private String password;@JsonInclude:
- এটি নির্দিষ্ট করে যে একটি ফিল্ড JSON এ অন্তর্ভুক্ত হবে কি না। সাধারণত
NON_NULLবাNON_EMPTYব্যবহার করা হয়।
@JsonInclude(JsonInclude.Include.NON_NULL) private String address;- এটি নির্দিষ্ট করে যে একটি ফিল্ড JSON এ অন্তর্ভুক্ত হবে কি না। সাধারণত
@JsonFormat:
- এটি ডেটা টাইপ (যেমন তারিখ) কিভাবে JSON এ ফরম্যাট হবে তা নির্দিষ্ট করে।
@JsonFormat(pattern="yyyy-MM-dd") private Date birthDate;
Jackson এর কিছু অতিরিক্ত ফিচার
- Streaming API:
- Jackson এর streaming API JSON ডেটা বিশ্লেষণ করতে সাহায্য করে, বিশেষত যখন ডেটার আকার বড় হয়। এটি আপনার মেমরি ব্যবহার কমিয়ে আনে এবং দ্রুত JSON প্রসেসিং করে।
- Custom Serializers and Deserializers:
- আপনি যদি ডিফল্ট serialization এবং deserialization প্রক্রিয়া অনুযায়ী কাস্টমাইজেশন করতে চান, তবে আপনি কাস্টম serializers এবং deserializers তৈরি করতে পারেন। এটি প্রয়োজনীয় লজিক প্রয়োগ করার জন্য সহায়ক।
Tree Model:
- Jackson আপনাকে JsonNode ব্যবহার করে JSON ডেটার tree model তৈরি করতে সাহায্য করে। এতে আপনি JSON ডেটার বিভিন্ন অংশ অ্যাক্সেস এবং পরিবর্তন করতে পারেন।
JsonNode node = objectMapper.readTree(json); String name = node.get("name").asText();
Jackson হল একটি শক্তিশালী এবং দ্রুত JSON লাইব্রেরি যা Java ডেভেলপারদের জন্য JSON ডেটা প্রসেসিং, serialization, এবং deserialization করতে সহায়তা করে। Jackson এর data binding, streaming, এবং tree model ফিচারগুলি JSON ডেটা ম্যানিপুলেশনকে সহজ এবং কার্যকরী করে তোলে। Annotations, Custom Serializers, এবং Streaming API এর মাধ্যমে আপনি Jackson কে আপনার প্রজেক্টের জন্য আরও কাস্টমাইজড এবং উপযোগী করতে পারেন।
Read more